# -*- coding: utf-8 -*-
# autor: Joao Guerreiro 13730
# data: 1 de Dezembro de 2014
# obs.: Projecto Python de LP - recolha dos dados e main program
#
import csv, xlrd, sqlite3, wx
from interface import MainFrame


def cel_format(lista):
    """
    efectua a formatacao das celulas do excel e aproximacao dos valores
    """
    lis_format = []
    for valor in lista:
        if type(valor) == str:
            lis_format.append('0')
        else:
            lis_format.append(round(valor, 1))
    return lis_format


#abre o ficheiro de excel e selecciona a folha
ficheiro_xls = xlrd.open_workbook('IPC_Portugal_1977_2013.xls')
folha = ficheiro_xls.sheet_by_index(0)


#escreve num ficheiro csv os valores do ficheiro excel
with open('middle_file.csv', 'wb') as ficheiro_csv:
    escritor = csv.writer(ficheiro_csv)
    for r in range(1, folha.nrows):
        escritor.writerow(cel_format(folha.row_values(r)))
ficheiro_csv.close()


#efectua conexao a base de dados
conexao = sqlite3.connect('basedados.db')
conexao.text_factory = str
bd = conexao.cursor()


#elimina tabela caso ja exista e cria uma nova
bd.execute("DROP TABLE IF EXISTS IPC_Portugal")
bd.execute('''CREATE TABLE IPC_Portugal
             (ano integer, ipc real,
             variacao_anual real, rmin real, rmax real, pib real,
             rendim_nacional real, rendim_disp real, remun_capita real)''')


#le os dados do ficheiro csv e insere na base de dados
with open('middle_file.csv', 'rb') as ficheiro_csv:
    leitor = csv.reader(ficheiro_csv)
    for linha in leitor:
        insere = [linha[1], linha[2], linha[3],
             linha[4], linha[5], linha[6], linha[7],
              linha[8], linha[9]]
        bd.execute('INSERT INTO IPC_Portugal VALUES(?,?,?,?,?,?,?,?,?)', insere)
conexao.commit()

#fecho da conexao
conexao.close()


#iniciacao da aplicacao
if __name__ == "__main__":
    IPC_PORT = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    frame_1 = MainFrame(None, -1, "")
    IPC_PORT.SetTopWindow(frame_1)
    frame_1.Show()
    IPC_PORT.MainLoop()



